#pragma once
#ifndef fastbird_Mouse_header_included_
#define fastbird_Mouse_header_included_

#include <Engine/IMouse.h>

namespace fastbird
{
	class Mouse : public IMouse
	{
	public:
		static void GetCurrentMousePos(long& x, long& y);

		Mouse();

		virtual void PushEvent(const MouseEvent& mouseEvent);

		virtual void EndFrame();
		virtual bool IsValid() const;
		virtual void Invalid();
		virtual void GetDeltaXY(long &x, long &y) const;
		
		/*bool ButtonDown(MOUSE_BUTTON button) const;
		bool ButtonUp(MOUSE_BUTTON button) const;		
		void GetMouseCoordDelta(long& x, long& y) const;
		void GetMouseCoordAbsolute(long& x, long& y) const;
		long GetWheel() const;*/


	private:
		int mButtonsDown;
		int mButtonClicked;
		int mButtonDoubleClicked;

		long mDeltaX;
		long mDeltaY;

		long mAbsX;
		long mAbsY;

		std::stack<long> mWheel;

		bool mValid;
	};
}

#endif